﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;

using PMServiceDesk.BusinessLogic;
using PMServiceDesk.DataType;
using PMServiceDesk.Utils.Interfaz;
using PMServiceDesk.Parameters.Constantes;
using PMServiceDesk.Web.AppCode;

namespace PMServiceDesk.Web.Forms.Workflow
{
    public partial class RegistrarTarea : System.Web.UI.Page
    {
        #region PaqueteTrabajo

        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack) return;

            string id = Request["ID"].Trim();

            string permiso = SoporteLogic.PermisoPorPaqueteTrabajo(Sesion.Usuario.Id, id);

            SoporteIU.RedireccionarPorPermiso(this.Response, permiso);

            hiddenPaqueteTrabajoId.Value = id;
            hiddenPermiso.Value = permiso;
        }

        [WebMethod]
        public static PaqueteTrabajoView Editar(string id)
        {
            return PaqueteTrabajoIU.Editar(id);
        }

        [WebMethod]
        public static string IniciarWorkflow(PaqueteTrabajoType registro)
        {
            return PaqueteTrabajoIU.IniciarWorkflow(registro);
        }

        [WebMethod]
        public static List<KeyValuePair<string, string>> TransicionEstados(string estadoPaqueteTrabajoId)
        {
            return PaqueteTrabajoIU.TransicionEstados(estadoPaqueteTrabajoId);
        }

        [WebMethod]
        public static List<KeyValuePair<string, string>> TransicionUsuarios(string estadoPaqueteTrabajoId)
        {
            return PaqueteTrabajoIU.TransicionUsuarios(estadoPaqueteTrabajoId);
        }

        #endregion

        #region Actividades
        [WebMethod]
        public static ActividadView ListarActividads(ActividadType registroBusqueda, int paginaActual, int cantidadMostrar, string orderBy,bool primerCarga)
        {
            return ActividadIU.Listar(registroBusqueda, paginaActual, cantidadMostrar, orderBy, primerCarga);
        }

        [WebMethod]
        public static string ExportarExcelActividads(ActividadType registroBusqueda, List<GridJSONField> gridFields)
        {
            return ActividadIU.ExportarExcel(registroBusqueda, gridFields);
        }

        [WebMethod]
        public static ActividadView CargarActividad(string id,string paqueteTrabajoId)
        {
            return ActividadIU.Cargar(id, paqueteTrabajoId);
        }

        [WebMethod]
        public static ActividadView GrabarActividad(ActividadType registro)
        {
            return ActividadIU.Grabar(registro);
        }

        [WebMethod]
        public static string EliminarActividad(string id)
        {
            return ActividadIU.Eliminar(id);
        }
        #endregion

        #region InteresadoPaqueteTrabajo

        [WebMethod]
        public static InteresadoPaqueteTrabajoView ListarInteresadoPaqueteTrabajos(InteresadoPaqueteTrabajoType registroBusqueda, int paginaActual, int cantidadMostrar, string orderBy)
        {
            return InteresadoPaqueteTrabajoIU.Listar(registroBusqueda, paginaActual, cantidadMostrar, orderBy);
        }

        [WebMethod]
        public static string ExportarExcelInteresadoPaqueteTrabajos(InteresadoPaqueteTrabajoType registroBusqueda, List<GridJSONField> gridFields)
        {
            return InteresadoPaqueteTrabajoIU.ExportarExcel(registroBusqueda, gridFields);
        }

        [WebMethod]
        public static InteresadoPaqueteTrabajoView CargarInteresadoPaqueteTrabajo(string id)
        {
            return InteresadoPaqueteTrabajoIU.Cargar(id);
        }

        [WebMethod]
        public static InteresadoPaqueteTrabajoView GrabarInteresadoPaqueteTrabajo(InteresadoPaqueteTrabajoType registro)
        {
            return InteresadoPaqueteTrabajoIU.Grabar(registro);
        }


        #endregion

        #region Comentarios Paquete Trabajo

        [WebMethod]
        public static ComentarioPaqueteTrabajoView ListarComentarioPaqueteTrabajos(ComentarioPaqueteTrabajoType registroBusqueda, int paginaActual, int cantidadMostrar, string orderBy)
        {
            return ComentarioPaqueteTrabajoIU.Listar(registroBusqueda, paginaActual, cantidadMostrar, orderBy);
        }

        [WebMethod]
        public static string ExportarExcelComentarioPaqueteTrabajos(ComentarioPaqueteTrabajoType registroBusqueda, List<GridJSONField> gridFields)
        {
            return ComentarioPaqueteTrabajoIU.ExportarExcel(registroBusqueda, gridFields);
        }

        [WebMethod]
        public static ComentarioPaqueteTrabajoView CargarComentarioPaqueteTrabajo(string id)
        {
            return ComentarioPaqueteTrabajoIU.Cargar(id);
        }

        [WebMethod]
        public static ComentarioPaqueteTrabajoView GrabarComentarioPaqueteTrabajo(ComentarioPaqueteTrabajoType registro)
        {
            return ComentarioPaqueteTrabajoIU.Grabar(registro);
        }

        [WebMethod]
        public static string EliminarComentarioPaqueteTrabajo(string id)
        {
            return ComentarioPaqueteTrabajoIU.Eliminar(id);
        }

        #endregion

        #region Historial Estado Paquete Trabajo

        [WebMethod]
        public static HistorialEstadoPaqueteTrabajoView ListarHistorialEstadoPaqueteTrabajos(HistorialEstadoPaqueteTrabajoType registroBusqueda, int paginaActual, int cantidadMostrar, string orderBy)
        {
            return HistorialEstadoPaqueteTrabajoIU.Listar(registroBusqueda, paginaActual, cantidadMostrar, orderBy);
        }

        [WebMethod]
        public static string ExportarExcelHistorialEstadoPaqueteTrabajos(HistorialEstadoPaqueteTrabajoType registroBusqueda, List<GridJSONField> gridFields)
        {
            return HistorialEstadoPaqueteTrabajoIU.ExportarExcel(registroBusqueda, gridFields);
        }

        [WebMethod]
        public static HistorialEstadoPaqueteTrabajoView CargarHistorialEstadoPaqueteTrabajo(string id)
        {
            return HistorialEstadoPaqueteTrabajoIU.Cargar(id);
        }

        [WebMethod]
        public static HistorialEstadoPaqueteTrabajoView GrabarHistorialEstadoPaqueteTrabajo(HistorialEstadoPaqueteTrabajoType registro)
        {
            return HistorialEstadoPaqueteTrabajoIU.Grabar(registro);
        }

        [WebMethod]
        public static string EliminarHistorialEstadoPaqueteTrabajo(string id)
        {
            return HistorialEstadoPaqueteTrabajoIU.Eliminar(id);
        }

        #endregion

        #region Documento Digital Paquete Trabajo

        [WebMethod]
        public static List<DocumentoTransicionEstadoType> ListarGridTransicion(string paqueteTrabajoId,string estadoOrigenId,string estadoDestinoId)
        {
            return DocumentoPaqueteTrabajoIU.ListarTransicion(paqueteTrabajoId,estadoOrigenId, estadoDestinoId);
        }

        [WebMethod]
        public static string AdjuntarTransicion(DocumentoTransicionEstadoType registro)
        {
            return DocumentoPaqueteTrabajoIU.AdjuntarTransicion(registro);
        }

        [WebMethod]
        public static string RegistrarComentarioFinalizar(ComentarioPaqueteTrabajoType registro)
        {
            return PaqueteTrabajoIU.RegistrarComentarioFinalizar(registro);
        }

        [WebMethod]
        public static DocumentoPaqueteTrabajoView ListarDocumentoPaqueteTrabajos(DocumentoPaqueteTrabajoType registroBusqueda, int paginaActual, int cantidadMostrar, string orderBy)
        {
            return DocumentoPaqueteTrabajoIU.Listar(registroBusqueda, paginaActual, cantidadMostrar, orderBy);
        }

        [WebMethod]
        public static string ExportarExcelDocumentoPaqueteTrabajos(DocumentoPaqueteTrabajoType registroBusqueda, List<GridJSONField> gridFields)
        {
            return DocumentoPaqueteTrabajoIU.ExportarExcel(registroBusqueda, gridFields);
        }

        [WebMethod]
        public static DocumentoPaqueteTrabajoView CargarDocumentoPaqueteTrabajo(string id)
        {
            return DocumentoPaqueteTrabajoIU.Cargar(id);
        }

        [WebMethod]
        public static DocumentoPaqueteTrabajoView GrabarDocumentoPaqueteTrabajo(DocumentoPaqueteTrabajoType registro)
        {
            return DocumentoPaqueteTrabajoIU.Grabar(registro);
        }

        [WebMethod]
        public static string EliminarDocumentoPaqueteTrabajo(string id)
        {
            return DocumentoPaqueteTrabajoIU.Eliminar(id);
        }

        #endregion

        #region Recurso Actividad
        [WebMethod]
        public static RecursoActividadView ListarRecursoActividads(RecursoActividadType registroBusqueda, int paginaActual, int cantidadMostrar, string orderBy)
        {
            return RecursoActividadIU.Listar(registroBusqueda, paginaActual, cantidadMostrar, orderBy);
        }

        [WebMethod]
        public static string ExportarExcelRecursoActividads(RecursoActividadType registroBusqueda, List<GridJSONField> gridFields)
        {
            return RecursoActividadIU.ExportarExcel(registroBusqueda, gridFields);
        }

        [WebMethod]
        public static RecursoActividadView CargarRecursoActividad(string id)
        {
            return RecursoActividadIU.Cargar(id);
        }

        [WebMethod]
        public static RecursoActividadView GrabarRecursoActividad(RecursoActividadType registro)
        {
            return RecursoActividadIU.Grabar(registro);
        }

        [WebMethod]
        public static string EliminarRecursoActividad(string id)
        {
            return RecursoActividadIU.Eliminar(id);
        }
        #endregion
    }
}